package com.cdvtc.flower.web.servlet;

import com.cdvtc.flower.dao.ProductsDao;
import com.cdvtc.flower.dao.impl.ProductsDaoImpl;
import com.cdvtc.flower.model.CartItem;
import com.cdvtc.flower.model.Products;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


@WebServlet(name = "AddToCartServlet2", urlPatterns = "/AddToCartServlet2")
public class AddToCartServlet2 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    private CartItem getCartItemByProductId(List<CartItem> cart, int productId){
        for(CartItem cartItem: cart) {
            if(cartItem.getProduct().getProduct_id() == productId) {
                return cartItem;
            }
        }
        return null; // 未找到
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 获取产品编号
        int id = Integer.parseInt(request.getParameter("productId"));
        //从Session中获取当前购物车
        HttpSession session = request.getSession();
        List<CartItem> cart = (List<CartItem>) session.getAttribute("cart");
        CartItem cartItem = null;
        if(cart != null) { // 购物已存在
            cartItem = getCartItemByProductId(cart, id);
            if(cartItem != null) { // 已有购物车项，直接使用该项
                cartItem.setQuantity(cartItem.getQuantity()+1); //数量加1
            }
        } else {//购物车为空
            cart = new ArrayList<>(); // 新建购物车
        }

        if(cartItem == null) { //购物车项未创建
            cartItem = new CartItem(); //新建购物车明细项

            ProductsDao productsDao = new ProductsDaoImpl();
            Products products = productsDao.getProductById(id);

            cartItem.setProduct(products);
            cartItem.setQuantity(1); // 默认为1

            cart.add(cartItem); //增加当前购物车项
            session.setAttribute("cart", cart);
        }

        response.sendRedirect("shop.jsp"); //返回首页
    }
}
